export const create2DArray = (arr:Array<any>, numOfArrays = 3, maxItemsPerArray = 6) => {
  // 创建一个空的二维数组
  let _arr: Array<any[]> = [];

  // 获取arr的总条数 30
  let totalItems = arr.length;

  // 最大数总数临界值 18
  let maxTotalItems = numOfArrays * maxItemsPerArray;

  // 计算多余的或缺少的元素数量
  let remainingItems = totalItems - maxTotalItems;

  // 按照给定的二维数组数量和每个数组的最大条数来填充数据
  let currentIndex = 0;

  // 如果元素数量大于目标数量，将多余的元素均匀分配到数组中
  if (remainingItems > 0) {
    for (let i = 0; i < numOfArrays; i++) {
      // 当前数组最多填充maxItemsPerArray个元素
      let currentArray: any[] = [];
      for (let j = 0; j < maxItemsPerArray && currentIndex < totalItems; j++) {
        currentArray.push(arr[currentIndex]);
        currentIndex++;
      }
      _arr.push(currentArray);
    }

    // 继续按顺序增加多余元素
    // 获取多余的所有元素
    let lostArr = arr.slice(maxTotalItems)
    for (let index = 0; index < lostArr.length; index++) {
      _arr[index % numOfArrays].push(lostArr[index]);
    }
  }
  // 如果元素数量小于目标数量，填充剩余的元素
  else {
    for (let i = 0; i < numOfArrays; i++) {
      let currentArray: any[] = [];
      // 将剩余的元素填充至二维数组中，最多maxItemsPerArray个元素
      for (let j = 0; j < maxItemsPerArray && currentIndex < totalItems; j++) {
        currentArray.push(arr[currentIndex]);
        currentIndex++;
      }
      _arr.push(currentArray);
    }
  }

  // 返回结果二维数组
  return _arr;
};
